import { fileURLToPath, URL } from 'node:url'
import { defineConfig, ConfigEnv, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import { createSvgIconsPlugin } from "vite-plugin-svg-icons"
import path from 'node:path';
// import vueJsx from '@vitejs/plugin-vue-jsx'
// import vueDevTools from 'vite-plugin-vue-devtools'  

// https://vite.dev/config/
export default defineConfig(({ mode, command }: ConfigEnv) => {
  // mode: 当前运行的环境模式，（npm run dev → development; npm run build → production‌）
  // 通过mode动态加载对应环境变量 const env = loadEnv(mode, process.cwd())
  // command: 标识当前执行命令类型(serve: 开发服务器; build: 生产构建)
  // 通过解构的方式接受vite的参数
  const env = loadEnv(mode, process.cwd());
  return {
    plugins: [
      vue(),
      // vueJsx(),
      // vueDevTools(),
      createSvgIconsPlugin({
        iconDirs: [path.resolve(__dirname, "./src/assets/icons")],
        symbolId: "icon-[dir]-[name]",
      }),
    ],
    // 配置别名
    resolve: {
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url)),
        '@assets': fileURLToPath(new URL('./src/assets', import.meta.url))
      },
    },
    server: {
      host: '0.0.0.0', // 允许局域网访问vite服务
      port: 8080,
      open: false, //重启项目自动打开浏览器
      // 配置代理,解决跨域问题
      proxy: {
        '/api': {
          target: 'http://127.0.0.1:7003',
          changeOrigin: true,
          secure: false,
          rewrite: (path) => path.replace(/^\/api/, '')
        }
      }
    },
    // 配置全局scss
    css: {
      preprocessorOptions: {
        scss: {
          additionalData: `@use "@/styles/variables.scss" as *;` // 只是配置的全局变量，如果是全局样式，还需在main.ts里手动引入
        }
      }
    }
  }
})
